package com.wtpaint.leetcode.subject;

public class MoveZeroes {

    /**
     * 283 --> 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
     * <p>
     * 示例:
     * <p>
     * 输入: [0,1,0,3,12] --->[1,0,0,3,12]
     * 输出: [1,3,12,0,0]
     * <p>
     * 说明:
     * <p>
     * 必须在原数组上操作，不能拷贝额外的数组。
     * 尽量减少操作次数。
     */

    //使用原地  26 27 80
    public static void moveZeroes(int[] nums) {
        int size = nums.length;
        int k = 0;
        for (int i = 0; i < size; i++) {
            if (nums[i] != 0) {
//                nums[k] = nums[i];
//                k++;
                nums[k++] = nums[i];
            }
        }
        for (int i = k; i < size; i++) {
            nums[i] = 0;
        }
    }

    public static void main(String[] args) {
        int[] nums = {0, 1, 0, 3, 12};
        moveZeroes(nums);
        for (int ret : nums) {
            System.out.print(" " + ret);
        }
    }
}
